package com.vibration.matlab;

import com.mathworks.toolbox.javabuilder.MWClassID;
import com.mathworks.toolbox.javabuilder.MWException;
import com.mathworks.toolbox.javabuilder.MWNumericArray;
import com.mathworks.toolbox.javabuilder.MWStringArray;
import com.vibration.common.config.VibrationConfig;
import com.vibration.socket.util.SocketUtil;
import getTestPlot.Plot;

/**
 * 生成左侧plot图像
 */
public class GetPlotLeft {
    /**
     * 得到左边plot图像
     * @throws MWException
     */
    public static TransInfo getPlot(int limd,int limdd,double[][] aopt) throws MWException {
        TransInfo transInfo=new TransInfo();
        Plot plot=new Plot();
        MWNumericArray matAopt = new MWNumericArray(aopt, MWClassID.DOUBLE);
        //String filePath=File.filePath;
        String filePath= VibrationConfig.getInversionPath()+"/"+ SocketUtil.inversionTask+"/";
        //如果目录不存在则创建
        java.io.File desc = new java.io.File(filePath+"left.jpg");
        if (!desc.exists())
        {
            if (!desc.getParentFile().exists())
            {
                desc.getParentFile().mkdirs();
            }
        }
        //String fileName="LeftPlot"+FileNameUtil.getFileName();
        String fileName="left";
        MWStringArray stringArrayPath=new MWStringArray(filePath);
        MWStringArray stringArrayName=new MWStringArray(fileName);
        Object[] res=plot.getTestPlot(3,limd,limdd,matAopt,stringArrayPath,stringArrayName);
        transInfo.setLeftImageFileName(fileName);

        //得到Vp的x值
        MWNumericArray getBTA= (MWNumericArray)res[1];
        double[][] BTA=(double[][]) getBTA.toDoubleArray();
        /**把数据转为一维数组**/
        double[] Vp=new double[BTA[0].length];
        for(int i=0;i<BTA.length;i++){
            for (int j = 0; j <BTA[0].length; j++) {
                Vp[j]=BTA[0][j];
            }
        }
        //得到Vs的y值
        MWNumericArray getALFA= (MWNumericArray)res[0];
        double[][] ALFA=(double[][]) getALFA.toDoubleArray();
        double[] Vs=new double[ALFA[0].length];
        for(int i=0;i<ALFA.length;i++){
            for (int j = 0; j <ALFA[0].length; j++) {
                Vs[j]=ALFA[0][j];
            }
        }
        //得到Y轴值
        MWNumericArray getYdata=(MWNumericArray)res[2];
        double[][]  Ydata=(double[][]) getYdata.toDoubleArray();
        /**把数据转为一维数组**/
        double[] getY=new double[Ydata[0].length];
        for(int i=0;i<Ydata.length;i++){
            for (int j = 0; j <Ydata[0].length; j++) {
                getY[j]=Ydata[0][j];
            }
        }

        //定义二维数组
        double[][] newListVp=new double[getY.length][2];
        //把一维数组合并为一维
        for(int i=0;i<getY.length;i++){
            newListVp[i][0]=getY[i];
            newListVp[i][1]=Vp[i];
        }

        //定义二维数组
        double[][] newListVs=new double[getY.length][2];
        //把一维数组合并为二维
        for(int i=0;i<getY.length;i++){
            newListVs[i][0]=getY[i];
            newListVs[i][1]=Vs[i];
        }
        for (int i = 0; i < Vp.length; i++) {
            System.out.println("得到Vp长度"+Vp[i]);
        }
        transInfo.setVsXData(Vs);
        transInfo.setVpXData(Vp);
        transInfo.setYData(getY);
        //存入结构体传递
        transInfo.setVpXYData(newListVp);
        transInfo.setVsXYData(newListVs);
        return transInfo;
    }
}
